// pages/upgrade/getFiles/index.js
import gaiaManager from '../../../utils/gaiaManager.js'
import bluetoothManager from '../../../utils/bluetooth.js'

Page({
  data: {
    // 页面状态
    isLoading: true,
    showError: false,
    errorMessage: '',
    
    // 设备连接状态
    deviceConnected: false,
    
    // 升级选项和过滤器（从上一页传递）
    upgradeOptions: null,
    filters: null,
    
    // 文件列表（与安卓版本FileData一致）
    files: [],
    
    // 加载状态
    loadingFiles: false,
    hasMoreFiles: true,
    currentPage: 1
  },

  onLoad(options) {
    console.log('获取文件页面加载:', options)
    
    // 解析传递的参数
    if (options.filters) {
      try {
        const filters = JSON.parse(decodeURIComponent(options.filters))
        this.setData({ filters })
        console.log('文件过滤器:', filters)
      } catch (error) {
        console.error('解析文件过滤器失败:', error)
        this.showError('Invalid file filters')
        return
      }
    }
    
    if (options.options) {
      try {
        const upgradeOptions = JSON.parse(decodeURIComponent(options.options))
        this.setData({ upgradeOptions })
        console.log('升级选项:', upgradeOptions)
      } catch (error) {
        console.error('解析升级选项失败:', error)
        this.showError('Invalid upgrade options')
        return
      }
    }
    
    this.initPage()
  },

  onShow() {
    this.loadFiles()
  },

  // 初始化页面
  initPage() {
    this.setData({
      isLoading: true,
      showError: false,
      errorMessage: '',
      files: [],
      currentPage: 1,
      hasMoreFiles: true
    })
  },

  // 加载文件列表（与安卓版本GetFilesFragment保持一致）
  async loadFiles() {
    try {
      this.setData({ isLoading: true })
      
      // 检查设备连接状态
      if (!bluetoothManager.isConnected) {
        this.showError('Device not connected')
        return
      }
      
      this.setData({ deviceConnected: true })
      
      // 获取可用文件列表
      await this.getAvailableFiles()
      
    } catch (error) {
      console.error('加载文件列表失败:', error)
      this.showError('Failed to load files: ' + error.message)
    } finally {
      this.setData({ isLoading: false })
    }
  },

  // 获取可用文件（与安卓版本保持一致）
  async getAvailableFiles() {
    try {
      console.log('获取可用文件列表')
      
      // 构建请求参数
      const requestParams = {
        page: this.data.currentPage,
        filters: this.data.filters || {}
      }
      
      // 调用服务获取文件列表
      const response = await gaiaManager.getAvailableFiles(requestParams)
      
      if (response.success) {
        const newFiles = response.data.files || []
        const hasMore = response.data.hasMore || false
        
        // 更新文件列表
        this.setData({
          files: this.data.currentPage === 1 ? newFiles : [...this.data.files, ...newFiles],
          hasMoreFiles: hasMore,
          currentPage: this.data.currentPage + 1
        })
        
        console.log('获取到文件:', newFiles.length, '个')
      } else {
        console.error('获取文件列表失败:', response.error)
        this.showError('Failed to get files: ' + response.error)
      }
      
    } catch (error) {
      console.error('获取文件列表异常:', error)
      // 使用模拟数据作为后备
      this.setData({
        files: [
          {
            id: 'file1',
            name: 'Firmware_v1.2.3.bin',
            version: '1.2.3',
            size: '2.5MB',
            date: '2024-01-15',
            description: 'Latest stable firmware update',
            tags: ['stable', 'recommended']
          },
          {
            id: 'file2',
            name: 'Firmware_v1.3.0.bin',
            version: '1.3.0',
            size: '2.8MB',
            date: '2024-01-20',
            description: 'Beta firmware with new features',
            tags: ['beta', 'experimental']
          }
        ],
        hasMoreFiles: false
      })
    }
  },

  // 文件项点击（与安卓版本onFileClick()一致）
  onFileClick(e) {
    const { fileId } = e.currentTarget.dataset
    console.log('文件点击:', fileId)
    
    const file = this.data.files.find(f => f.id === fileId)
    if (!file) {
      console.error('文件不存在:', fileId)
      return
    }
    
    // 导航到文件下载页面
    wx.navigateTo({
      url: '/pages/upgrade/downloadFile/index?file=' + encodeURIComponent(JSON.stringify(file)) + '&options=' + encodeURIComponent(JSON.stringify(this.data.upgradeOptions))
    })
  },

  // 刷新文件列表
  onRefreshFiles() {
    this.setData({
      currentPage: 1,
      hasMoreFiles: true,
      files: []
    })
    this.getAvailableFiles()
  },

  // 加载更多文件
  onLoadMoreFiles() {
    if (this.data.hasMoreFiles && !this.data.loadingFiles) {
      this.setData({ loadingFiles: true })
      this.getAvailableFiles().finally(() => {
        this.setData({ loadingFiles: false })
      })
    }
  },

  // 显示错误
  showError(message) {
    this.setData({
      showError: true,
      errorMessage: message,
      isLoading: false
    })
  },

  // 下拉刷新
  onPullDownRefresh() {
    this.onRefreshFiles().finally(() => {
      wx.stopPullDownRefresh()
    })
  },

  // 上拉触底
  onReachBottom() {
    this.onLoadMoreFiles()
  }
})